home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / Pakiet bezpieczenstwa / mini Pentoo LiveCD 2006.1 / mpentoo-2006.1.iso / modules / nessus-2.2.8.mo / usr / lib / nessus / plugins / proftpd_exhaust.nasl < prev    next >
Text File  |  2005-01-14  |  4KB  |  139 lines

  1. #
  2. # This script was written by Renaud Deraison <deraison@nessus.org>
  3. # Script audit and contributions from Carmichael Security <http://www.carmichaelsecurity.com>
  4. #      Erik Anderson <eanders@carmichaelsecurity.com>
  5. #      Added link to the Bugtraq message archive
  6. #
  7. # See the Nessus Scripts License for details
  8. #
  9. # References:
  10. # Date:  Thu, 15 Mar 2001 22:30:24 +0000
  11. # From: "The Flying Hamster" <hamster@VOM.TM>
  12. # Subject: [SECURITY] DoS vulnerability in ProFTPD
  13. # To: BUGTRAQ@SECURITYFOCUS.COM
  14. #
  15. #   Problem commands include:
  16. #   ls */../*/../*/../*/../*/../*/../*/../*/../*/../*/../*/../*/../*
  17. #   ls */.*/*/.*/*/.*/*/.*/*/.*/*/.*/*/.*/*/.*/*/.*/*/.*/*/.*/*/.*/
  18. #   ls .*./*?/.*./*?/.*./*?/.*./*?/.*./*?/.*./*?/.*./*?/.*./*?/.*./*?/
  19. #   Other commands of this style may also cause the same behavior; the exact
  20. #   commands listed here are not necessary to trigger.
  21.  
  22.  
  23. if(description)
  24. {
  25.  script_id(10634);
  26.  script_bugtraq_id(6341);
  27.  script_version ("$Revision: 1.21 $");
  28.  
  29.  
  30.  name["english"] = "proftpd exhaustion attack";
  31.  name["francais"] = "proftpd exhaustion attack";
  32.  
  33.  script_name(english:name["english"],
  34.              francais:name["francais"]);
  35.              
  36.  desc["english"] = "
  37. The remote FTP server seems to be vulnerable to an exhaustion
  38. attack which may makes it consume all available memory on the remote
  39. host when it receives the command :
  40.  
  41.     NLST /../*/../*/../*/../*/../*/../*/../*/../*/../*/../    
  42.     
  43.  
  44. Solution : upgrade to ProFTPd 1.2.2 and modify your configuration
  45. file to include :
  46.     DenyFilter \*.*/
  47.     
  48.     
  49. If you use another FTP server, contact your vendor.
  50.  
  51. Reference : http://online.securityfocus.com/archive/1/169069
  52.  
  53. Risk factor : High";
  54.                  
  55.                  
  56. desc["francais"] = "
  57. Le serveur FTP distant semble vulnΘrable α une attaque lui faisant
  58. consommer toute la mΘmoire du serveur FTP distant lorsqu'il reτoit
  59. la commande :
  60.  
  61.     NLST /../*/../*/../*/../*/../*/../*/../*/../*/../*/../    
  62.  
  63. Solution : Si le serveur distant est ProFTPd, alors passez en version 1.2.2
  64. sinon contactez votre vendeur pour un patch
  65. Facteur de risque : ElevΘ";
  66.                      
  67.  script_description(english:desc["english"],
  68.                     francais:desc["francais"]);
  69.                     
  70.  
  71.  script_summary(english:"Checks if the version of the remote proftpd",
  72.                 francais:"DΘtermine la version du proftpd distant");
  73.  script_category(ACT_ATTACK);
  74.  script_family(english:"FTP", francais:"FTP");
  75.  
  76.  
  77.  script_copyright(english:"This script is Copyright (C) 2001 Renaud Deraison",
  78.                   francais:"Ce script est Copyright (C) 2001 Renaud Deraison");
  79.                   
  80.  script_dependencie("find_service.nes", "ftp_anonymous.nasl");
  81.  script_require_ports("Services/ftp", 21);
  82.  exit(0);
  83. }
  84.  
  85. #
  86. # The script code starts here : 
  87. #
  88.  
  89.  
  90. include("ftp_func.inc");
  91.  
  92.  
  93. port = get_kb_item("Services/ftp");
  94. if(!port)port = 21;
  95. if(!get_port_state(port))exit(0);
  96. login = get_kb_item("ftp/login");
  97. pass  = get_kb_item("ftp/password");
  98.  
  99. if(!login || safe_checks())
  100. {
  101. banner = get_ftp_banner ( port : port );
  102. if ( ! banner ) exit(0);
  103. if(egrep(pattern:"^220 ProFTPD ((1\.1\..*)|(1\.2\.(0|1)[^0-9]))", string:banner ))security_hole(port);
  104. }
  105. else
  106. {
  107.  soc = open_sock_tcp(port);
  108.  if(soc)
  109.  {
  110.   if(ftp_log_in(socket:soc, user:login, pass:pass))
  111.   {
  112.    pasv_port = ftp_get_pasv_port(socket:soc);
  113.    soc2 = open_sock_tcp(pasv_port, transport:get_port_transport(port));
  114.    if (! soc2)
  115.     exit(0);
  116.    req = string("NLST /../*/../*/../\r\n");
  117.    send(socket:soc, data:req);
  118.    code = ftp_recv_line(socket:soc);
  119.    if(strlen(code))
  120.      data = ftp_recv_listing(socket:soc2);
  121.    else
  122.      exit(0);
  123.      
  124.    if(("Permission denied" >< data) ||
  125.       ("Invalid command" >< data))exit(0);
  126.    if(egrep(string:data, pattern:"/\.\./[^/]*/\.\./"))
  127.    {
  128.     security_hole(port);
  129.    }
  130.    send(socket:soc, data:string("QUIT\r\n\r\n"));
  131.    close(soc);
  132.    close(soc2);
  133.   }
  134.  }
  135. }
  136.